October 2025
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
6/7/17 06:38 am
Форма обратной связи для Wordpress, без плагина. Защита от спама и полевые испытания ASCII-каптчи
Или еще раз возвращаясь к напечатанному. Сегодня поговорим о защите от спама. В первоначально описанном способе копия был баг (промотайте в конец), из-за которого можно было легко и непринужденно загадить ящик получателя спамом, да еще и в автоматическом режиме. Отправить картинки, вирусы, или загадить чужой ящик не получится, но вот закидать "Войной и миром" ящик владельца сайта вполне таки да. Чтобы уменьшить такую вероятность, добавим в скрипт отправки почты каптчу. Поскольку скрипт, отправляющий почту (mail.php ) к компонентам Wordpress не относится, то каптчу придется изобретать свою. Лично мне это оказалось даже хорошо, т.к. совсем недавно я писал о создании ASCII-каптчи, копия, и мне прямо-таки жгло показать ее работу в реальном проекте, а не только в учебных примерах. Посему ее и используем для защиты от спама.
Постановка задачиПереписать скрипт mail.php так, чтобы он смог использовать ASCII-каптчу. Краткое описание процесса1. Пользователь в форме обратной связи, вводит сообщение.  2. По нажатию кнопки "Отправить" сообщение передается скрипту mail.php 3. Если сообщение было отправлено из формы, то скрипт генерирует каптчу, HTML-страницу, содержащую параметры сообщения (имя, текст, электронный адрес пользователя), ASCII-изображение каптчи, поле для ввода кода, элементы управления (кнопки) с помощью которых пользователь может ввести код, обновить код подтверждения, отправить код и сообщение. 4. Скрипт также должен обработать возможные ошибки. Если они есть, пользователю выводится соответствующее сообщение и страница с формой ввода сообщения открывается вновь. 5. Если каптча введена неверно, пользователю демонстрируется сообщение об ошибке ввода каптчи, и дается возможность повторить ввод каптчи. Информация в сообщении сохраняется. 6. Если код введен верно и другие ошибки отсутствуют, сообщение передается на заранее указанный в скрипте e-mail. ( Далее подробное описание скрипта )А ТЕПЕРЬ, ВНИМАНИЕ, ВОПРОС Обход этой каптчи:Реализация не совсем промышленная. Мне хочется, чтобы вы подумали, над тем, как данный способ защиты обойти. Можете воспользоваться своим методом и попытаться заспамить мне почтовый ящик. Кто заспамит - получит минус два вопроса на зачете. Можно спамить просто так, но желательно, с описанием способа. Я знаю 5. Комментарии на lj.rossia.org будут открыты для всех, можно анонимно предлагать, как способы обхода, так и способы защиты. Стирать не буду ничего, кроме флуда, спама и личных оскорблений. Для самых ленивых, кто не удосужился все прочесть. Инструкция по установке.Форма обратной связи для WordPress, без плагина здесь или здесьВсе делается так же, с той лишь разницей, что обновленный архив скачиваете по ссылке ниже, и не забываете закачать captcha.php в директорию темы, вместе с mail.php . СсылкиСмотреть код скрипта на PasteBinСкачать все одним архивомТесты и куски кодаЗаметка в PDFЭто репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/06/01/forma-obratnoj-svyazi-dlya-wordpress-bez-plagina-zashhita-ot-spama-i-polevye-ispytaniya-ascii-kaptchi/
4/16/17 02:29 am
ASCII-каптча, каптча псевдографикой. Часть III. Примеры использования.
Сразу оговорюсь, это учебные примеры. В ближайшее время я вернусь к теме и покажу, как использовать каптчу "на местности", т.е. встроить ее в работающий движок сайта или его часть. А тут пока примеры относительно скорее умозрительные, что называется, из учебника.
Каптча и механизм сессий.Если кто-то вдруг совсем не знает, что это такое, то в конце заметки есть ссылка на источник, ну или можно в поисковик сходить. Код тестового скрипта вполне неплохо обкомментирован, поэтому особых пояснений не требует. Если уж возникнут вопросы - задавайте, постараюсь ответить. Код на PasteBinИспользование cookie для проверки каптчиМеханизм сессий на самом деле не всегда удобно использовать, например, если не хочется возиться с уже продуманными умными людьми сессиями готового сайтового движка, а свою каптчу встроить хочется. В таком случае просто перекладываем всю работу на cookie, создаваемые и удаляемые по нашему хотению: Код на PasteBinТут поясню лишь один момент, установку самих cookie. Делается это встроенной функцией PHP setcookie, полное описание которой вы можете найти в разделе источников в конце заметки. Мне же понадобились только три параметра: setcookie($name,$value,$expiredtime);
где: $name - имя cookie $value - передаваемое в cookie значение, сохраняемое на компьютере пользователя $expiredtime - срок действия cookie, после его окончания cookie не будет обрабатываться сервером. Таким образом устанавливается максимальное время, данное пользователю на ввод кода каптчи. В данном случае: setcookie('mycaptchamd5',md5($captchacode),time()+300);
т.е. имя cookie 'mycaptchamd5' , в качестве значения передается md5-хэш кода каптчи, а время действия устанавливается в 300 секунд (т.е. 5 минут). Смотреть код или скачать готовый вариантКод модуля ASCII каптчи на PasteBinПример с сессиейПример с cookieЦифры псевдографикой. Вариант 1Цифры псевдографикой. Вариант 2Скачать все с Mega.nz в одном архивеИсточникиФункция setcookie()Разработка CAPTCHA своими рукамиКопииПредыдущие частиЧасть IЧасть IIЭто репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/04/14/ascii-kaptcha-kaptcha-psevdografikoj-chast-iii-primery-ispolzovaniya/
4/15/17 06:25 am
ASCII-каптча, каптча псевдографикой. Часть II. В которой генерируется каптча.
 Итак, закончили мы на том, что нарисовали все цифры, создали массивы php с псевдографическими изображениями цифр и написали отладочную функцию, которая выводит конкретную цифру. Продолжаем! Для начала условимся, то нашему злодею-хацкеру, распознающему каптчу, мы, хоть и ненамного, но усложним задачу: "пробельные" ("пустые") символы в изображении каждой цифры, а также сами символы, изображающие цифру, будут выбраны случайно из заранее заданного набора. Зададим набор символов, изображающих цифру, в виде строки: $pgstring="#$%@!?0"; //символы, из которых будут составлены цифры Аналогично и для "пустых" символов: $spstring="- "; //пробельные символы Тут все зависит от вкуса, цвета и лично ваших глазок. Главное, чтобы в строке с возможными "пустыми" символами и в строке с возможными символами, изображающими цифру, не встретилось одинаковых символов, иначе при определенных условиях, пользователь вполне может получить вот такую вот гадость, вместо каптчи: ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ###### ######
Заведем еще две переменные, которые будут хранить выбранные символы для "пробельных" и символов изображения: $pgchar=""; $spchar=""; Пока просто оставим их пустыми, потом к ним еще вернемся. ( Далее подробное описание скрипта с картинками и видео )ИтогоВ данный момент, мы имеем готовый include-модуль, формирующий код каптчи и ее псевдографическое изображение. В следующей части будут примеры ее использования. Код каптчиСмотреть на PasteBinНачало здесьПродолжениеЭто репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/04/13/ascii-kaptcha-kaptcha-psevdografikoj-chast-ii-v-kotoroj-generiruetsya-kaptcha/
4/15/17 06:19 am
ASCII-каптча, каптча псевдографикой. Часть I.
 Сегодня будем рисовать каптчу. Причем не с помощью стандартных библиотек вывода графики (таких мануалов в сети более чем достаточно), а каптчу, отображаемую пользователю в виде псевдографики, т.е. изображения символов каптчи будут созданы из обычных числовых и буквенных символов. Для упрощения задачи примем следующее: - В качестве символов, из которых будет создаваться изображение, будем использовать латинские буквы, цифры и знаки препинания. Можно, конечно, и китайскими иероглифами пользоваться, но не факт что пользователь сможет каптчу распознать и она у него не "поплывет". - Сам код каптчи будет состоять только из цифр (ну вот лень мне было заморачиваться с буквами в ASCII-арт). Плюсы: + Скрипт легко встраивается как медведевский будильник, в разные места в любое место, где нужна каптча. + Не требует библиотек обработки изображений, дополнительных ранее нарисованных картинок и т.д., соответственно, будет работать даже на самом плохом хостинге, где библиотек типа ImageMagick может вообще не быть + Отображается даже в консольном (текстовом) редакторе типа lynx . + Почти не тратит трафик (текст же) и ресурсы сервера. Минусы: - Довольно легко ее распарсить автоматически, если не применять всякие дополнительные фишки, типа изменения количества строк и столбцов изображения. Их, к сожалению, в этом мануале не будет, но если кто-нибудь захочет вдруг, то я вернусь к этому вопросу. В части первой займемся рисованием цифр. Конечно, человеку увлекающемуся ASCII-артом это нафиг не надо, можно сразу пропускать и переходить ко второй части. Кто не знает, что такое ASCII-арт вообще, тот может сходить в Википедию или Гугль, и ознакомиться с темой. Я сам не великий ASCII-сенсей, так что использовал достаточно стандартную методу: 1. В любом простом текстовом редакторе (Блокноте, Notepad++, mcedit или редакторе FAR-а) нарисуем поле размером в X символов и Y строк каким-либо одним символом, например * , - , # или любым другим. Должно получиться что-то типа этого (я взял поле размером 6 x 5 символов): ------
------
------
------
------
2. Далее, нажимаем клавишу Insert, включаем режим замены и заменяем в этом поле символы - на какие-нибудь другие, так, чтобы получилось изображение определенной цифры, например: -0000-
00--00
00--00
00--00
-0000-
Если кто-то ленивый, то можно поискать готовые цифры в Гугле, взять несколько черновой вариант здесь, готовый, используемый мною вариант здесь. Или можно вообще в последней части статьи скачать сразу весь архив. XD Итак, у нас есть готовые изображения цифр, осталось лишь записать их в виде, доступном PHP. Создаем массивы, содержащие псевдографические изображения цифр. Здесь и далее условимся, что в качестве "пустого" символа я использовал * , а в качестве символа для изображения цифры, знак $ . ( Код и некоторые пояснения )В следующей части создадим генератор кода каптчи и генератор ее ASCII-изображения. Это репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/04/13/ascii-kaptcha-kaptcha-psevdografikoj-chast-i/
|